import axios from 'axios';
import router from '../router'; // 导入路由实例

// 创建axios实例
const api = axios.create({
  baseURL: '/api',
  timeout: 10000,
  headers: {
    'Content-Type': 'application/json'
  }
});

// 请求拦截器
api.interceptors.request.use(
  config => {
    // 添加token认证信息
    const token = localStorage.getItem('token');
    if (token) {
      config.headers.Authorization = `Bearer ${token}`;
    }
    return config;
  },
  error => {
    return Promise.reject(error);
  }
);

// 响应拦截器
api.interceptors.response.use(
  response => {
    return response.data;
  },
  error => {
    console.error('API请求错误:', error);
    if (error.response) {
      // 处理未授权情况
      if (error.response.status === 401) {
        localStorage.removeItem('token');
        localStorage.removeItem('userInfo');
        // 使用Vue Router导航到登录页，避免与路由守卫冲突
        if (router.currentRoute.value.path !== '/login') {
          router.push('/login');
        }
      }
      // 服务器返回错误状态码
      return Promise.reject(error.response.data);
    } else if (error.request) {
      // 请求发出但没有收到响应
      return Promise.reject({ error: '网络错误，请检查连接' });
    } else {
      // 请求配置出错
      return Promise.reject({ error: '请求错误' });
    }
  }
);

// 订单相关API
export const orderApi = {
  // 创建订单
  createOrder: (orderData) => api.post('/orders', orderData),
  
  // 获取订单列表
  getOrders: (params = {}) => api.get('/orders', { params }),
  
  // 获取订单详情
  getOrderDetail: (id) => api.get(`/orders/${id}`),
  
  // 更新订单
  updateOrder: (id, orderData) => api.put(`/orders/${id}`, orderData),
  
  // 标记订单为已打印
  printOrder: (id, printData = {}) => api.put(`/orders/${id}/print`, printData),
  
  // 删除订单
  deleteOrder: (id) => api.delete(`/orders/${id}`)
};

// 打印记录相关API
export const printApi = {
  // 获取打印记录
  getPrintRecords: (params = {}) => api.get('/print-records', { params })
};

// 用户相关API
export const userApi = {
  // 用户登录
  login: (credentials) => api.post('/auth/login', credentials),
  
  // 获取当前用户信息
  getCurrentUser: () => api.get('/user/profile'),
  
  // 获取用户列表
  getUsers: (params = {}) => api.get('/users', { params }),
  
  // 创建新用户
  createUser: (userData) => api.post('/users', userData),
  
  // 更新用户信息
  updateUser: (id, userData) => api.put(`/users/${id}`, userData),
  
  // 删除用户
  deleteUser: (id) => api.delete(`/users/${id}`),
  
  // 用户登出（前端处理）
  logout: () => {
    localStorage.removeItem('token');
    localStorage.removeItem('userInfo');
    // 使用Vue Router导航到登录页
    if (router.currentRoute.value.path !== '/login') {
      router.push('/login');
    }
    return Promise.resolve();
  }
};

export default api;